home *** CD-ROM | disk | FTP | other *** search
- 10 REM THIS PROGRAM WAS WRITTEN AS A TEST BED FOR MY GEMINI-10X, HOWEVER
- 20 REM IT MAY BE OF SOME USE AS A GEN PURPOSE UTILITY FOR THOSE OF YOU
- 30 REM THAT DO NOT HAVE A PRINT UTILITY. IF IT WERE COMPILED IT MAY BE
- 40 REM A VERY GOOD PROGRAM (ONCE SPEEDED UP).
- 50 REM STEVE/ESSY/CRYSTAL FRISBY 4 MAY 1985
- 60 CLEAR 500: DEFINT A-Z
- 70 DIM TF$(1),PM$(11),PM(11)
- 80 SCREEN 0,1:COLOR 15,1:WIDTH 80:KEY OFF
- 90 PW=1
- 100 PL=2
- 110 LM=3
- 120 RM=4
- 130 TM=5
- 140 BM=6
- 150 LS=7
- 160 NF=8
- 170 TF=9
- 180 PZ=10
- 190 FF=11
- 200 RD=0:VW=40
- 210 TF$(0)="NO": TF$(1)="YES": PN$="Page"
- 220 FOR I=1 TO 11: READ PM$(I):NEXT I
- 230 DATA Page width
- 240 DATA Page length
- 250 DATA Left margin
- 260 DATA Right mgn.
- 270 DATA Top margin
- 280 DATA Bottom mgn.
- 290 DATA Line space
- 300 DATA Number pgs
- 310 DATA Title pgs
- 320 DATA Pg-pause
- 330 DATA Skip headings 1st pg
- 340 FOR I=1 TO 11: READ PM(I):NEXT I
- 350 DATA 80
- 360 DATA 66
- 370 DATA 5
- 380 DATA 5
- 390 DATA 3
- 400 DATA 6
- 410 DATA 1
- 420 DATA 1
- 430 DATA 0
- 440 DATA 0
- 450 DATA 1
- 460 FF$=CHR$(12)
- 470 CR$=CHR$(13)
- 480 LF$=CHR$(10)
- 490 TB$=CHR$(9)
- 500 BS$=CHR$(8)
- 510 SP$=" "
- 520 HY$="-"
- 530 CC$=FF$+CR$+LF$+TB$+BS$+SP$
- 540 CLS
- 550 INPUT"Which DRIVE is the Source File on [ A or B ]";SF$
- 560 FILES SF$+":"
- 570 INPUT"Print which file"; FI$
- 580 FI$=SF$+":"+FI$
- 590 ON ERROR GOTO 1290
- 600 OPEN FI$ FOR INPUT AS 1
- 610 PRINT:PRINT "Print to which.....S=screen P=lpt:?"
- 620 FO$=INKEY$
- 630 IF FO$="S" OR FO$="s" OR FO$="P" OR FO$="p" THEN 640 ELSE 620
- 640 CLS: FOR I=1 TO 7: IZ$=STR$(I):PRINT USING "\ \";IZ$;" ";:PRINT PM$(I)" ="PM(I):NEXT I
- 650 FOR I=8 TO 11: IZ$=STR$(I):PRINT USING "\ \";IZ$;" ";:PRINT PM$(I)" = "TF$(PM(I)):NEXT I
- 660 S=0:PRINT:INPUT"Change no.1-11 (RETURN=none)";S
- 670 IF S=0 THEN 710
- 680 IF S>=1 AND S<=7 THEN PRINT:PRINT"Enter a new value for '"PM$(S)"'";:INPUT PM(S):GOTO 640
- 690 IF S>=8 AND S<=11 THEN PRINT "'"PM$(S)"' (YES/NO)";:INPUT S1$: IF S1$="YES"OR S1$="yes" THEN PM(S)=1 ELSE IF S1$="NO" OR S1$="no" THEN PM(S)=0
- 700 GOTO 640
- 710 LW=PM(PW)-PM(LM)-PM(RM): TL=PM(PL)-PM(BM):LM$=STRING$(PM(LM),SP$)
- 720 CLS: IF PM(TF)=1 THEN PRINT "Enter a title, max"LW"chars.":PRINT:PRINT:LINE INPUT TI$: TI$=LEFT$(TI$,LW)
- 730 IF FO$="P" OR FO$="p" THEN CLS:GOTO 1350
- 740 C$="":B$="":PN=0
- 750 COLOR 15,0:WIDTH 80:CLS:PRINT " PAGE 1":GOTO 860
- 760 PRINT"_____________________________________________________________________________":REM BOTTOM BOTDER
- 770 IF EOF(1) THEN PRINT:PRINT"PRINTOUT OF ";FI$;" COMPLETED"
- 780 IF FO$="P" OR FO$="p" THEN 860
- 790 IF EOF(1) OR PM(PZ)=1 THEN PRINT:PRINT "E=exit P=lpt: N=new file SPACE BAR=next page":BEEP:ELSE 860
- 800 RD$=INKEY$
- 810 IF RD$="E" OR RD$="e" THEN CLS:KEY ON:FILES:END
- 820 IF RD$="P" OR RD$="p" THEN FO$="P":PN=PN-1:GOTO 1350
- 830 IF RD$="N" OR RD$="n" THEN RUN
- 840 IF RD$=" " THEN 860
- 850 GOTO 800
- 860 FOR T=1 TO 4:PRINT:NEXT:PRINT "_____________________________________________________________________________":REM TOP BORDER
- 870 PN=PN+1: LN=0
- 880 IF PN=RD THEN BEEP:PN=PN-1:IF EOF(1) THEN 790 ELSE 1490
- 890 IF LN<PM(TM) THEN GOSUB 1200: GOTO 890
- 900 IF PN=1 AND PM(FF)=1 THEN 930
- 910 IF PM(TF)=1 THEN BH$=TI$:GOSUB 1210:GOSUB 1200
- 920 IF PM(TF)=1 OR PM(NF)=1 THEN GOSUB 1200:LK=1:GOSUB 1240
- 930 IF EOF(1) THEN 1060
- 940 IF LN>=TL THEN 1160
- 950 C1$=C$: C$=INPUT$(1,1)
- 960 ON INSTR(1,CC$,C$) GOTO 1060,1080,1100,1120,1150,1190
- 970 B$=B$+C$: IF C$>=SP$ THEN CP=CP+1
- 980 IF CP<LW THEN WF=0: GOTO 930
- 990 WF=1: LB=LEN(B$): SP=1: HP=0: S=1
- 1000 HQ=HP:HP=INSTR(S,B$,HY$):IF HP>0 THEN S=HP+1:GOTO 1000
- 1010 HP=HQ:S=1:SP=0
- 1020 SQ=SP: SP=INSTR(S,B$,SP$):IF SP>0 THEN S=SP+1:GOTO 1020
- 1030 SP=SQ:BP=-(SP>HP)*SP-(HP>=SP)*HP
- 1040 IF BP=0 THEN GOSUB 1220: GOTO 930
- 1050 B1$=RIGHT$(B$,LB-BP):B$=LEFT$(B$,BP): GOSUB 1220:B$=B1$:CP=LEN(B$):GOTO 930
- 1060 AF=0:WF=0:IF B$>""THEN GOSUB 1220
- 1070 GOTO 1160
- 1080 IF WF=0 THEN GOSUB 1220ELSE WF=0
- 1090 GOTO 930
- 1100 IF C1$=CR$ OR AF=1 OR WF=1 THEN 930
- 1110 GOSUB 1220: GOTO 930
- 1120 I1=8-CP MOD 8: I2=LW-CP
- 1130 TB=-(I1<I2)*I1-(I2<=I1)*I2
- 1140 CP=CP+TB:B$=B$+STRING$(TB,SP$):GOTO 980
- 1150 B$=B$+C$:CP=CP-1:WF=0:GOTO 930
- 1160 IF PM(NF)=1 THEN GOSUB 1260:BH$=" "+PN$+STR$(PN)+".":COLOR 0,7:PRINT USING"\ \";STR$(LN+1);:COLOR 15,0:PRINT BH$: LN=LN+1
- 1170 IF LN<PM(PL) THEN GOSUB 1200: GOTO 1170
- 1180 GOTO 760
- 1190 IF CP=0 THEN 930ELSE 970
- 1200 COLOR 0,7:PRINT USING"\ \";STR$(LN+1);:COLOR 15,0:PRINT "":LN=LN+1:RETURN
- 1210 COLOR 0,7:PRINT USING"\ \";STR$(LN+1);:COLOR 15,0:PRINT LM$BH$:LN=LN+1:RETURN
- 1220 COLOR 0,7:PRINT USING"\ \";STR$(LN+1);:COLOR 15,0:PRINT LM$;
- 1230 PRINT B$:LN=LN+1: B$="":CP=0:LK=1
- 1240 IF LK<PM(LS) AND LN<TL THEN GOSUB 1200: LK=LK+1: GOTO 1240
- 1250 RETURN
- 1260 IF LN<PM(PL)-3 THEN GOSUB 1200:GOTO 1260
- 1270 RETURN
- 1280 CLS
- 1290 PRINT
- 1300 IF ERR=53 THEN PRINT "FILE ";CHR$(34)+FI$CHR$(34);" NOT LISTED":GOTO 570
- 1310 IF ERR=25 THEN PRINT"PRINTER ERROR!":PRINT:PRINT"TURN ON PRINTER, HIT ANY KEY";
- 1320 ER$=INKEY$:IF ER$=""THEN 1320
- 1330 IF ER$<>""THEN 1360
- 1340 END
- 1350 REM BEGINNING OF PRINTER ROUTINE
- 1360 SCREEN 0,1:COLOR 14,6:CLS
- 1370 CLOSE:C$="":B$="":CP=0:LK=1
- 1380 PRINT"PRINTER SETTINGS:":PRINT:PRINT
- 1390 PRINT "Pause between pages? Y/N"
- 1400 RD$=INKEY$
- 1410 IF RD$="Y" OR RD$="y" THEN PM(PZ)=1:GOTO 1440
- 1420 IF RD$="N" OR RD$="n" THEN PM(PZ)=0:GOTO 1440
- 1430 GOTO 1400
- 1440 PRINT:INPUT "Start printing at page number";RD
- 1450 IF RD<2 THEN 1480
- 1460 IF RD>=2 THEN CLOSE 1:OPEN FI$ FOR INPUT AS 1:GOTO 740
- 1470 GOTO 1440
- 1480 OPEN FI$ FOR INPUT AS 1
- 1490 COLOR 14,6:CLS:PRINT:PRINT"EMPHASIZED print....Y/N ?"
- 1500 RD$=INKEY$
- 1510 IF RD$="Y" OR RD$="y" THEN LPRINT CHR$(27);CHR$(69):GOTO 1540
- 1520 IF RD$="N" OR RD$="n" THEN LPRINT CHR$(27);CHR$(70):GOTO 1540
- 1530 GOTO 1500
- 1540 OPEN"LPT1:"FOR OUTPUT AS 2
- 1550 PRINT
- 1560 INPUT "Align paper then press ENTER",RD$:PRINT
- 1570 IF EOF(1) THEN GOSUB 2040:WIDTH 80:KEY ON:CLOSE:PRINT:PRINT:PRINT"PRINTOUT OF ";FI$;" COMPLETED":PRINT:FILES:BEEP:END
- 1580 IF PM(PZ)=1 THEN PRINT "E=exit program SPACE BAR=print page.";PN+1:ELSE 1630
- 1590 RD$=INKEY$
- 1600 IF RD$=" " THEN 1630
- 1610 IF RD$="E" OR RD$="e" THEN CLOSE:COLOR 15,0:CLS:KEY ON:FILES SF$+":":END
- 1620 GOTO 1590
- 1630 PN=PN+1: LN=0
- 1640 IF LN<PM(TM) THEN GOSUB 1950: GOTO 1640
- 1650 IF PN=1 AND PM(FF)=1 THEN 1680
- 1660 IF PM(TF)=1 THEN BH$=TI$:GOSUB 1960:GOSUB 1950
- 1670 IF PM(TF)=1 OR PM(NF)=1 THEN GOSUB 1950:LK=1:GOSUB 1990
- 1680 IF EOF(1) THEN 1810
- 1690 IF LN>=TL THEN 1910
- 1700 C1$=C$: C$=INPUT$(1,1)
- 1710 ON INSTR(1,CC$,C$) GOTO 1810,1830,1850,1870,1900,1940
- 1720 B$=B$+C$: IF C$>=SP$ THEN CP=CP+1
- 1730 IF CP<LW THEN WF=0: GOTO 1680
- 1740 WF=1: LB=LEN(B$): SP=1: HP=0: S=1
- 1750 HQ=HP:HP=INSTR(S,B$,HY$):IF HP>0 THEN S=HP+1:GOTO 1750
- 1760 HP=HQ:S=1:SP=0
- 1770 SQ=SP: SP=INSTR(S,B$,SP$):IF SP>0 THEN S=SP+1:GOTO 1770
- 1780 SP=SQ:BP=-(SP>HP)*SP-(HP>=SP)*HP
- 1790 IF BP=0 THEN GOSUB 1970: GOTO 1680
- 1800 B1$=RIGHT$(B$,LB-BP):B$=LEFT$(B$,BP): GOSUB 1970:B$=B1$:CP=LEN(B$):GOTO 1680
- 1810 AF=0:WF=0:IF B$>""THEN GOSUB 1970
- 1820 GOTO 1910
- 1830 IF WF=0 THEN GOSUB 1970ELSE WF=0
- 1840 GOTO 1680
- 1850 IF C1$=CR$ OR AF=1 OR WF=1 THEN 1680
- 1860 GOSUB 1970: GOTO 1680
- 1870 I1=8-CP MOD 8: I2=LW-CP
- 1880 TB=-(I1<I2)*I1-(I2<=I1)*I2
- 1890 CP=CP+TB:B$=B$+STRING$(TB,SP$):GOTO 1730
- 1900 B$=B$+C$:CP=CP-1:WF=0:GOTO 1680
- 1910 IF PM(NF)=1 THEN GOSUB 2010:BH$=" "+PN$+STR$(PN)+".":PRINT#2,BH$: LN=LN+1
- 1920 IF LN<PM(PL) THEN GOSUB 1950: GOTO 1920
- 1930 GOTO 1570
- 1940 IF CP=0 THEN 1680 ELSE 1720
- 1950 PRINT#2,"":LN=LN+1:RETURN
- 1960 PRINT#2,LM$BH$: LN=LN+1:RETURN
- 1970 IF B$>"" THEN PRINT #2,LM$;
- 1980 PRINT#2,B$:LN=LN+1: B$="":CP=0:LK=1
- 1990 IF LK<PM(LS) AND LN<TL THEN GOSUB 1950: LK=LK+1: GOTO 1990
- 2000 RETURN
- 2010 IF LN<PM(PL)-4 THEN GOSUB 1950:GOTO 2010
- 2020 RETURN
- 2030 END
- 2040 PRINT:PRINT"DO YOU WANT ANOTHER COPY Y/N ?"
- 2050 RD$=INKEY$
- 2060 IF RD$="Y" OR Y$="y" THEN PN=0:CLS:GOTO 1350
- 2070 IF RD$="N" OR RD$="n" THEN COLOR 15,0:CLS:RETURN
- 2080 GOTO 2050
- 2090 END
- IF RD$="Y" OR Y$="y" THEN PN=0:CLS:GOTO 1350
- 2070 IF RD$="N" OR RD$="n" THEN C